home *** CD-ROM | disk | FTP | other *** search
/ Download Now 8 / Download Now V8.iso / Program / InternetTools / ApacheWebServer1.3.6 / apache_1_3_6_win32.exe / _SETUP.1 / multithread.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-05-03  |  1.8 KB  |  66 lines

  1. #ifndef APACHE_MULTITHREAD_H
  2. #define APACHE_MULTITHREAD_H
  3.  
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7.  
  8. #define MULTI_OK (0)
  9. #define MULTI_TIMEOUT (1)
  10. #define MULTI_ERR (2)
  11.  
  12. typedef void mutex;
  13. typedef void semaphore;
  14. typedef void thread;
  15. typedef void event;
  16.  
  17. /*
  18.  * Ambarish: Need to do the right stuff on multi-threaded unix
  19.  * I believe this is terribly ugly
  20.  */
  21. #ifdef MULTITHREAD
  22. #define APACHE_TLS __declspec( thread )
  23.  
  24. thread *create_thread(void (thread_fn) (void *thread_arg), void *thread_arg);
  25. int kill_thread(thread *thread_id);
  26. int await_thread(thread *thread_id, int sec_to_wait);
  27. void exit_thread(int status);
  28. void free_thread(thread *thread_id);
  29.  
  30. API_EXPORT(mutex *) ap_create_mutex(char *name);
  31. API_EXPORT(mutex *) ap_open_mutex(char *name);
  32. API_EXPORT(int) ap_acquire_mutex(mutex *mutex_id);
  33. API_EXPORT(int) ap_release_mutex(mutex *mutex_id);
  34. API_EXPORT(void) ap_destroy_mutex(mutex *mutex_id);
  35.  
  36. semaphore *create_semaphore(int initial);
  37. int acquire_semaphore(semaphore *semaphore_id);
  38. int release_semaphore(semaphore *semaphore_id);
  39. void destroy_semaphore(semaphore *semaphore_id);
  40.  
  41. event *create_event(int manual, int initial, char *name);
  42. event *open_event(char *name);
  43. int acquire_event(event *event_id);
  44. int set_event(event *event_id);
  45. int reset_event(event *event_id);
  46. void destroy_event(event *event_id);
  47.  
  48. #else /* ndef MULTITHREAD */
  49.  
  50. #define APACHE_TLS
  51. /* Only define the ones actually used, for now */
  52. extern void *ap_dummy_mutex;
  53.  
  54. #define ap_create_mutex(name)    ((mutex *)ap_dummy_mutex)
  55. #define ap_acquire_mutex(mutex_id)    ((int)MULTI_OK)
  56. #define ap_release_mutex(mutex_id)    ((int)MULTI_OK)
  57. #define ap_destroy_mutex(mutex_id)    (0)
  58.  
  59. #endif /* ndef MULTITHREAD */
  60.  
  61. #ifdef __cplusplus
  62. }
  63. #endif
  64.  
  65. #endif /* !APACHE_MULTITHREAD_H */
  66.